/*
 * @Author: your name
 * @Date: 2021-09-27 09:34:14
 * @LastEditTime: 2021-09-27 19:16:59
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /egg-ts-template/config/config.default.ts
 */
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';

export default (appInfo: EggAppInfo) => {
  const config = {} as PowerPartial<EggAppConfig>;

  config.isLoginOffline = false; // 账户是否在一个地方登录，

  // override config from framework / plugin
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1615905087333_1361';

  // add your egg config in here
  config.middleware = [ 'jwt' ];
  config.jwt = {
    enable: true,
    // 跳过指定的路径 /api/v1/app/* 
    skipPath: [
      '/public/',  // 静态资源
      '/api/v1/app',
    ],
    // 跳过指定的接口
    ignore: [
      '/api/v1/admin/home/page',
    ],
    skipValidation: false, //【是否关闭jwt】开发环境跳过 登录验证，以及接口权限验证
  };

  config.cluster = {
    listen: {
      path: '',
      port: 8080,
      hostname: '0.0.0.0',
    },
  };

  // 以读取网络图片的方式修改
  config.siteFile = {
    '/favicon.ico': 'https://bbs.jczxw.cn/public/images/favicon.ico?t=2.3.4',
  };

  config.sequelize = {
    dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
    dialectOptions: {
      charset: 'utf8mb4',
    },
    database: 'egg-ts-template',
    host: 'lz.jczxw.cn',
    port: 3306,
    username: 'egg-ts-template',
    password: 'egg-ts-template',
    timezone: '+08:00',
    define: {
      underscored: true, // 注意需要加上这个， egg-sequelize只是简单的使用Object.assign对配置和默认配置做了merge, 如果不加这个 update_at会被转变成 updateAt故报错
      // 禁止修改表名，默认情况下，sequelize将自动将所有传递的模型名称(define的第一个参数)转换为复数
      // 但是为了安全着想，复数的转换可能会发生变化，所以禁止该行为
      freezeTableName: true,
      // 对于create_at,和update_at，禁止查出createAt和updateAt字段，不设置为false，会同时查出来create_at和createAt
      timestamps: true,
    },
  };

  /* Redis */
  config.redis = {
    client: {
      host: '121.4.212.226', // 安装好的redis服务器地址
      port: 6379, // 端口
      password: '123456',
      db: 6,
    },
  };

  /* 获取客户端ip https://zhuanlan.zhihu.com/p/62265144 */
  config.proxy = true;
  config.maxProxyCount = 1;

  config.security = {
    csrf: {
      enable: false,
    },
  };
  
  /** 上传文件支持的格式 */
  config.multipart = {
    mode: 'stream', // file
    whitelist: [ '.jpg', '.jpeg', '.png', '.gif', '.webp', '.docx', '.doc', '.xlsx', '.pdf' ],
    // fileModeMatch: /(\/uploadExcel)$/, // /pageTemplate接口使用file模式，其他使用stream模式
    // fileExtensions: [
    // 新增文件类型  fileExtensions属性为 whilelist 新增文件白名单  此处支持 .xlsx 后缀文件
    // '.xlsx',
    // ],
  };

  // the return config will combines to EggAppConfig
  return {
    ...config,
  };
};
